package com.chaike.hsq.service;

import com.chaike.hsq.bean.response.BaseHsqResponse;
import com.chaike.hsq.exception.HuiShouQianException;
import com.chaike.hsq.service.impl.HsqCommonService;
import com.chaike.hsq.service.impl.HsqMerchantService;
import com.chaike.hsq.service.impl.HsqPayService;
import com.chaike.hsq.storage.HsqConfigStorage;

import java.util.Map;

/**
 * 慧收钱客户端.
 *
 * @author Luo
 * @version 1.0
 * @date 2021-12-31 10:51:00
 */
public interface HuiShouQianService {

    /**
     * 获取配置信息.
     *
     * @return 配置信息
     */
    HsqConfigStorage getHsqConfigStorage();

    /**
     * 公共相关接口服务.
     *
     * @return 公共相关接口服务
     */
    HsqCommonService getHsqCommonService();

    /**
     * 支付相关接口服务.
     *
     * @return 支付相关接口服务
     */
    HsqPayService getHsqPayService();

    /**
     * 商户相关接口服务.
     *
     * @return 商户相关接口服务
     */
    HsqMerchantService getHsqMerchantService();

    /**
     * 加密业务请求参数数据.
     *
     * @param content 业务请求参数数据
     * @return 加密后数据
     */
    String encrypt(String content);

    /**
     * 解密应答报文体数据.
     *
     * @param result 应答报文体数据
     * @return 解密后数据
     */
    String decrypt(String result);

    /**
     * 发送POST请求，得到响应字符串.
     *
     * @param url    请求地址
     * @param params 请求参数
     * @return 请求结果
     */
    String post(String url, Map<String, Object> params);

    /**
     * 发送POST请求，得到响应对象.
     *
     * @param url    请求地址
     * @param params 请求参数
     * @return 请求结果
     * @throws HuiShouQianException 异常
     */
    BaseHsqResponse postObject(String url, Map<String, Object> params) throws HuiShouQianException;

}
